package cn.edu.hyit.hjq.volunteems.backend.controller;

import cn.edu.hyit.hjq.volunteems.backend.dto.reault.JsonResult;
import cn.edu.hyit.hjq.volunteems.backend.dto.request.ActivityRequest;
import cn.edu.hyit.hjq.volunteems.backend.pojo.Activity;
import cn.edu.hyit.hjq.volunteems.backend.service.ActivityService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 活动管理控制器
 * 处理活动的发布与查询等操作
 *
 * @module 活动服务
 */
@RestController
@RequestMapping("/activity")
public class ActivityController {

    private final ActivityService activityService;

    public ActivityController(ActivityService activityService) {
        this.activityService = activityService;
    }

    /**
     * 发布活动接口
     * 管理员通过此接口发布新的志愿活动
     *
     * @param request 活动请求参数，包含活动标题、时间、地点、描述等信息
     * @return JsonResult<String> 返回操作结果，成功时返回活动发布成功提示
     */
    @PostMapping("/publish")
    public JsonResult<String> publishActivity(@RequestBody ActivityRequest request) {
        String userId = "1"; // TODO: 将来从登录上下文中提取用户 ID
        activityService.publishActivity(request, userId);
        return JsonResult.success("活动发布成功");
    }

    /**
     * 分页查询活动接口
     * 按照活动状态排序返回分页列表（未开始 > 进行中 > 已结束）
     *
     * @param page 当前页码（从1开始）
     * @param size 每页大小
     * @return JsonResult<List<Activity>> 返回分页活动列表
     */
    @GetMapping("/list")
    public JsonResult<List<Activity>> listActivities(@RequestParam int page,
                                                     @RequestParam int size) {
        return JsonResult.success(activityService.getActivitiesSortedByStatus(page, size));
    }
}
